package 预科0103;

/*编程获取两个指定字符串中的最大相同子串。 

 如： s1="asdafghjka", s2="aaasdfg" 他们的最大子串为"asd"  

 提示： 将短的那个串进行长度依次递减的子串与较长的串比较*/
public class MaxSubStr {

	public static void main(String[] args) {
		String str1="asdafghjka";
		String str2="gh";
		System.out.println("字符串"+str1+"和字符串"+str2+"的最大子字符串为"+MaxSubStr(str1,str2));
	}
	public static String MaxSubStr(String str1,String str2){
		//存放较短字符串
		String substr;
		//存放较长字符串
		String supstr;
		if(str1.length()>str2.length()) {
			supstr=str1;
			substr=str2;
		}else{
			supstr=str2;
			substr=str1;
		}
		//子串长度递减：最大为较短字符串的长度，最小长度为1，不存在则返回空
		for(int i=substr.length();i>0;i--) {
			//子串开始下标j递增,结束下标为 j+i,范围 j~substr.length()
			for(int j=0;j<=substr.length()-i;j++) {
				if(supstr.contains(substr.substring(j, j+i))) {
					return substr.substring(j, j+i);
				}
			}
		}
		return "";
		
			
	}
}

